from django.test import TestCase
import os
if not os.environ.get("DJANGO_SETTINGS_MODULE"):
    os.environ.setdefault("DJANGO_SETTINGS_MODULE",'drf_demo.settings')

import django
django.setup()
# Create your tests here.

from booktest.models import BookInfo,HeroInfo
from booktest.serializers import BookInfoSerializer


if __name__ == '__main__':
    # 1.创建router类的对象
    from rest_framework.routers import SimpleRouter,DefaultRouter
    router = SimpleRouter()

    # 2.注册视图集
    from booktest.views_14路由router的使用 import BookInfoViewSet
    router.register('books',BookInfoViewSet,base_name='books')

    # 3.获取动态生成的视图集中处理函数的url配置项
    for url in router.urls:
        print(url)

# if __name__ == '__main__':
#     serializer = BookInfoSerializer()
#     print(serializer)

# if __name__ == '__main__':
#     # 获取id为1的图书
#     book = BookInfo.objects.get(id=1)
#
#     data = {
#         'btitle':'射雕英雄传2',
#         'bpub_date':'1980-10-1'
#     }
#
#     # 创建序列化器对象
#     serializer = BookInfoSerializer(book,data=data)
#
#     # 调用is_valid方法进行数据校验
#     print(serializer.is_valid())
#
#     print(serializer.errors)
#
#     # 反序列化-数据的保存
#     # save里面是可以传递参数的，我们在调用create和update的时候也是可以取的到值的。
#     serializer.save()
#
#     # 获取更新对象的序列化数据
#     print(serializer.data)

# if __name__ == '__main__':
#     data = {
#         'btitle':'django入门第二部',
#         'bpub_date':'1999-1-1',
#         'bread':24,
#         'bcomment':12
#     }
#     # 需求：传递的btitle内容必须含有django
#     # 补充验证
#     # 需求：bread必须大于等于bcomment
#
#     # 创建序列化器类对象
#     serializer=BookInfoSerializer(data=data)
#
#     # 掉用is_valid方法进行数据校验
#     print(serializer.is_valid())
#
#     # 获取校验失败的信息
#     print(serializer.errors)
#     # 获取校验之后的数据
#     print(serializer.validated_data)
#
#     # 反序列化的数据保存,调用create方法
#     serializer.save()
#
#     # 获取新增的图书序列化字典数据
#     print(serializer.data)

# if __name__ == '__main__':
#     data = {
#         'btitle':'django入门',
#         'bpub_date':'1999-1-1',
#         'bread':20,
#         'bcomment':15
#     }
#     # 需求：传递的btitle内容必须含有django
#     # 补充验证
#     # 需求：bread必须大于等于bcomment
#
#     # 创建序列化器类对象
#     serializer=BookInfoSerializer(data=data)
#
#     # 掉用is_valid方法进行数据校验
#     print(serializer.is_valid())
#
#     # 获取校验失败的信息
#     print(serializer.errors)
#     # 获取校验之后的数据
#     print(serializer.validated_data)



# if __name__ == '__main__':
#     # 获取id为1的图书
#     book = BookInfo.objects.get(id=1)
#     # 获取和book关联的英雄的信息
#     # book.heroinfo_set.all()
#
#     # 创建序列化器类的对象
#     serializer = BookInfoSerializer(book)
#
#     # 获取序列化之后的字典的数据
#     res_data = serializer.data
#
#     # 格式化显示
#     import json
#     # indent是缩进，控制台打印的时候字典多行显示，并且缩进4个字符
#     res = json.dumps(res_data, indent=4,ensure_ascii=False)
#     print(res)



# if __name__ == '__main__':
#     # 获取id为1的英雄
#     hero = HeroInfo.objects.get(id=1)
#     # 获取和英雄关联的图书
#
#     # 创建序列化器对象
#     serializer = HeroInfoSerializer(hero)
#
#     res_data = serializer.data
#
#     import json
#     res = json.dumps(res_data,indent=4,ensure_ascii=False)
#     print(res)



# if __name__ == '__main__':
#     # ================= 序列化多个对象 =================
#     # 获取所有的图书信息
#     books = BookInfo.objects.all() # QuerySet
#
#     # 创建序列化器类
#     serializer = BookInfoSerializer(books,many=True) # 将book中的每个对象都序列化出来
#
#     # 获取序列化之后的数据
#     res_data = serializer.data
#     print(res_data)
#     # 格式化显示
#     import json
#     # indent是缩进，控制台打印的时候字典多行显示，并且缩进4个字符
#     res = json.dumps(res_data, indent=4,ensure_ascii=False)
#     print(res)


# if __name__ == '__main__':
#     # ================= 序列化单个对象 =================
#     # 获取id为1的图书
#     book = BookInfo.objects.get(id=1)
#
#     # 创建序列化器类的对象
#     serializer = BookInfoSerializer(book)
#
#     # 获取序列化之后的字典的数据
#     res_data = serializer.data
#
#     # 格式化显示
#     import json
#     # indent是缩进，控制台打印的时候字典多行显示，并且缩进4个字符
#     res = json.dumps(res_data, indent=4,ensure_ascii=False)
#     print(res)